<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    const averageOfSubtree = function (root) {
      let count = 0                        // 记录有多少个节点满足条件
      const dfs = (node) => {              // 传入待处理的node节点
        if (node === null) return [0, 0]  // 递归终止条件  如果节点为空则退出递归  该空节点的值为0，节点总数为0
        let left = dfs(node.left)        // 处理左节点
        let right = dfs(node.right)      // 处理右节点
        let val = node.val + left[0] + right[0]   // 计算加上node节点及node的所有子节点的val值总和
        if (node.val === Math.floor(val / (1 + left[1] + right[1]))) {      // 判断平均值
          count++                 // 满足则 ++
        }
        return [val, 1 + left[1] + right[1]]     // 返回 [该节点及所有子节点总和值, 所有子节点数量]
      }
      dfs(root)                       // 出入根节点
      return count                     // 返回答案
    };
    console.log(averageOfSubtree([4, 8, 5, 0, 1, null, 6]))
  </script>
</body>

</html>